Архитектура ОС

Файловые системы

Архитектура ОС

План лекции

1. Задачи ОС по управлению файлами и устройствами

2. Логическая и физическая организация файловой системы

3. Файловые операции

4. Контроль доступа к файлам

Файловые системы
Архитектура ОС

Введение

Файловые системы предоставляют пользователям и приложениям структурированный способ хранения, организации и доступа к данным на устройствах хранения.

  • Абстракция над физическим носителем
  • Единообразный интерфейс для приложений
  • Защита данных и управление доступом
Файловые системы
Архитектура ОС

1. Задачи ОС по управлению файлами и устройствами

Операционная система играет ключевую роль в управлении файлами и устройствами хранения.

  • Создание, удаление и переименование файлов и каталогов
  • Обеспечение логической структуры файловой иерархии
  • Сопоставление логических имён файлов с физическими адресами
Файловые системы
Архитектура ОС

Задачи ОС: управление дисковым пространством

  • Выделение и освобождение места на диске
  • Управление свободным пространством для эффективного хранения
  • Расширение существующих файлов без потери данных
Файловые системы
Архитектура ОС

Задачи ОС: безопасность и целостность

  • Управление правами доступа пользователей к файлам
  • Обеспечение целостности данных при сбоях
  • Журналирование, контрольные суммы и другие техники восстановления
Файловые системы
Архитектура ОС

Задачи ОС: производительность

  • Оптимизация скорости доступа к файлам
  • Кэширование frequently used data
  • Дефрагментация и размещение данных
Файловые системы
Архитектура ОС

Задачи ОС: поддержка устройств

  • Поддержка различных типов устройств хранения: HDD, SSD, USB, сетевые диски
  • Абстракция от аппаратного обеспечения
  • Единообразный интерфейс для работы с файлами
Файловые системы
Архитектура ОС

Задачи ОС: подсистема ввода-вывода

  • Управление буферизацией операций ввода-вывода
  • Обслуживание запросов на чтение и запись данных
  • Поддержка различных файловых систем: FAT32, NTFS, ext4, APFS
Файловые системы
Архитектура ОС

2. Логическая и физическая организация файловой системы

Файловая система состоит из двух основных частей:

  • Логическая организация — представление файлов пользователю
  • Физическая организация — хранение данных на устройстве
Файловые системы
Архитектура ОС

Логическая организация: структура каталогов

  • Иерархическая структура — дерево каталогов и файлов
  • Каждый каталог может содержать файлы и другие каталоги
  • Корневой каталог — вершина иерархии (/ в Unix, C:\ в Windows)
Файловые системы
Архитектура ОС

Логическая организация: именование

  • Правила присвоения имён файлам и каталогам
  • Максимальная длина имени
  • Допустимые и недопустимые символы
  • Расширения файлов как указание типа
Файловые системы
Архитектура ОС

Логическая организация: атрибуты файлов

  • Размер файла
  • Время создания, изменения, последнего доступа
  • Права доступа
  • Тип файла (обычный, каталог, ссылка, устройство)
Файловые системы
Архитектура ОС

Логическая организация: метаданные и тома

  • Метаданные ФС — размер диска, количество свободных блоков, расположение корневого каталога
  • Том/раздел — логическая единица, на которой размещается файловая система
  • Одна ФС обычно ассоциирована с одним томом
Файловые системы
Архитектура ОС

Физическая организация: блоки

  • Устройство хранения делится на блоки фиксированного размера
  • Блок — минимальная единица хранения данных
  • Типичный размер блока: 512 байт — 4 КБ
  • Размер блока влияет на производительность и эффективность
Файловые системы
Архитектура ОС

Методы размещения файлов: непрерывное

Непрерывное размещение (Contiguous Allocation):

  • Файл хранится в последовательных блоках
  • Простая реализация
  • Быстрый последовательный доступ

Недостатки:

  • Фрагментация дискового пространства
  • Сложность расширения файлов
Файловые системы
Архитектура ОС

Методы размещения файлов: связанное

Связанное размещение (Linked Allocation):

  • Блоки файла разбросаны по диску
  • Каждый блок содержит указатель на следующий
  • Нет внешней фрагментации

Недостатки:

  • Медленный произвольный доступ
  • Надёжность: потеря указателя = потеря данных
Файловые системы
Архитектура ОС

Методы размещения файлов: индексированное

Индексированное размещение (Indexed Allocation):

  • Индексный блок содержит указатели на все блоки файла
  • Быстрый произвольный доступ
  • Эффективное использование пространства

Используется в: ext4, NTFS, APFS

Файловые системы
Архитектура ОС

Сравнение методов размещения

Метод Доступ Фрагментация
Непрерывное Быстрый Высокая
Связанное Медленный Низкая
Индексированное Быстрый Низкая
  • Непрерывное — просто, но негибко
  • Связанное — гибко, но медленно
  • Индексированное — оптимальный баланс
Файловые системы
Архитектура ОС

Управление свободным пространством

  • Битовые карты (Bitmaps): каждый бит соответствует блоку на диске

    • 1 — блок занят, 0 — блок свободен
    • Компактное представление, простой поиск свободных блоков
  • Связанные списки свободных блоков:

    • Список блоков, которые в данный момент свободны
    • Меньше накладных расходов в памяти
Файловые системы
Архитектура ОС

Расположение метаданных файловой системы

  • Суперблок — основная информация о ФС (размер, количество блоков, inodes)
  • Inodes (Unix) — структура данных с метаданными каждого файла
  • MFT (NTFS) — Master File Table
  • Метаданные критичны: потеря = потеря всей ФС
Файловые системы
Архитектура ОС

Примеры файловых систем: FAT32

  • Старая файловая система, используется для небольших устройств
  • Таблица размещения файлов (File Allocation Table)
  • Ограничение на размер файла: 4 ГБ
  • Простая реализация, широкая совместимость
Файловые системы
Архитектура ОС

Примеры файловых систем: NTFS

  • Стандартная ФС для Windows
  • Поддержка больших файлов и томов
  • Журналирование для восстановления после сбоев
  • Шифрование (EFS), сжатие, квоты
Файловые системы
Архитектура ОС

Примеры файловых систем: ext4

  • Типичная ФС для Linux
  • Журналирование_metadata
  • Поддержка файлов до 16 ТБ
  • Обратная совместимость с ext2/ext3
  • Отложенное выделение блоков
Файловые системы
Архитектура ОС

Примеры файловых систем: APFS

  • Файловая система Apple для macOS и iOS
  • Оптимизирована для SSD и флэш-памяти
  • Клонирование файлов (Copy-on-Write)
  • Шифрование на уровне тома
  • Мгновенные снимки (snapshots)
Файловые системы
Архитектура ОС

Сравнение файловых систем

Свойство FAT32 NTFS ext4 APFS
ОС Win Linux macOS
Макс. файл 4 ГБ 16 ТБ 16 ТБ 8 ЭБ
Журнал Нет Да Да Да
  • FAT32 — совместимость
  • NTFS — экосистема Windows
  • ext4 — производительность Linux
  • APFS — оптимизация под SSD
Файловые системы
Архитектура ОС

3. Файловые операции

ОС предоставляет набор системных вызовов для работы с файлами.

  • Create — создание нового файла
  • Open — подготовка файла к работе, возвращает дескриптор
  • Read — чтение данных из файла
Файловые системы
Архитектура ОС

Файловые операции: запись и навигация

  • Write — запись данных в файл
  • Seek — перемещение указателя текущей позиции в файле
  • Позиционирование позволяет читать/писать в произвольное место
Файловые системы
Архитектура ОС

Файловые операции: завершение работы

  • Close — завершение работы с файлом, освобождение ресурсов
  • Delete — удаление файла с диска
  • Rename — переименование файла или перемещение
Файловые системы
Архитектура ОС

Файловые операции: атрибуты

  • Get Attributes — получение информации о файле (размер, дата, права)
  • Set Attributes — изменение атрибутов файла
  • Атрибуты хранятся в метаданных (inode, MFT-запись)
Файловые системы
Архитектура ОС

Жизненный цикл файла

  1. Create — файл создаётся
  2. Open — открывается для работы
  3. Read / Write — данные читаются и записываются
  4. Close — ресурсы освобождаются
  5. Get/Set Attributes — управление метаданными
  6. Rename — переименование
  7. Delete — файл удаляется

Дескриптор файла (file descriptor) — ключевой ресурс ОС

Файловые системы
Архитектура ОС

Дескриптор файла

  • Целочисленный идентификатор открытого файла в процессе
  • Указывает на внутреннюю структуру ОС (open file table)
  • Ограниченное количество дескрипторов на процесс
  • Закрытие файла освобождает дескриптор
Файловые системы
Архитектура ОС

4. Контроль доступа к файлам

Контроль доступа определяет, какие пользователи или группы имеют право выполнять определённые операции с файлом.

  • Критически важный аспект безопасности ОС
  • Защита конфиденциальных данных
  • Предотвращение несанкционированных действий
Файловые системы
Архитектура ОС

Механизм: ACL (Access Control Lists)

  • Явно перечисляют права для каждого пользователя или группы
  • Более гибкие, чем традиционные разрешения
  • Используются в NTFS, NFSv4, macOS

Пример ACL:

user::rwx
group::r-x
other::r--
user:alice:r--
group:devs:rw-
Файловые системы
Архитектура ОС

Механизм: POSIX permissions (rwx)

  • Традиционная схема в Unix-подобных системах
  • Каждый файл имеет владельца и группу
  • Права задаются отдельно для:
    • Owner (владелец)
    • Group (группа)
    • Other (остальные)
  • Три типа прав: r (read), w (write), x (execute)
Файловые системы
Архитектура ОС

Пример: POSIX permissions

Файл myfile.txt имеет разрешения: rwxr-xr--

Категория Права Значение
Владелец rwx 7
Группа r-x 5
Остальные r-- 4
  • rwx = чтение + запись + выполнение
  • r-x = чтение + выполнение
  • r-- = только чтение
  • Восьмеричная запись: 754
Файловые системы
Архитектура ОС

Механизм: RBAC

Role-Based Access Control:

  • Пользователям назначаются роли

  • Ролям предоставляются определённые права доступа

  • Упрощает управление доступом в крупных системах

  • Примеры ролей: администратор, редактор, читатель

  • Используется в корпоративных СУБД и веб-системах

Файловые системы
Архитектура ОС

Управление правами доступа

  • chmod (Unix) — изменение прав доступа из командной строки
    • chmod 755 file.txt
    • chmod u+x file.txt
  • Графический интерфейс — визуальное управление правами
  • API ОС — программный интерфейс для управления правами
    • chmod(), chown(), setfacl()
Файловые системы
Архитектура ОС

Специальные биты прав доступа (Unix)

  • SUID — выполнение с правами владельца файла
  • SGID — выполнение с правами группы файла
  • Sticky bit — только владелец может удалить файл
    • Применяется к каталогам вроде /tmp
Файловые системы
Архитектура ОС

Маска прав доступа (umask)

  • Определяет права по умолчанию для новых файлов
  • Вычитается из максимальных прав
  • Типичное значение: 022 → файлы 644, каталоги 755
  • Настраивается командой umask
Файловые системы
Архитектура ОС

Заключение

Файловые системы — фундаментальная часть ОС, обеспечивающая структурированное и надежное хранение и доступ к данным.

  • Понимание логической и физической организации критически важно
  • Различные ФС предлагают разные компромиссы между производительностью, надёжностью и функциональностью
  • Контроль доступа — основа безопасности данных
Файловые системы
Архитектура ОС

Ключевые выводы лекции

  • ОС абстрагирует физическое хранение данных

  • Три метода размещения: непрерывное, связанное, индексированное

  • Блоки — минимальная единица хранения

  • Индексированное размещение — стандарт современных ФС

  • Три модели контроля доступа: ACL, POSIX, RBAC

  • POSIX rwx — базовая модель Unix

  • Выбор ФС влияет на производительность и безопасность

  • Метаданные (суперблок, inodes) критичны для работы ФС

Файловые системы
Архитектура ОС

Вопросы для самоконтроля

  1. Какие основные задачи решает ОС в области управления файлами?
  2. В чём различие между логической и физической организацией файловой системы?
  3. Какие методы размещения файлов существуют и в чём их достоинства и недостатки?
  4. Что такое битовая карта и как она используется для управления свободным пространством?
  5. Перечислите основные файловые операции и объясните назначение каждой.
  6. Что такое дескриптор файла и какова его роль?
  7. В чём разница между ACL и POSIX-разрешениями?
  8. Как работает модель контроля доступа RBAC?
  9. Что такое SUID, SGID и Sticky bit?
  10. Сравните файловые системы FAT32, NTFS, ext4 и APFS по ключевым характеристикам.
Файловые системы
Архитектура ОС

Рекомендуемые ресурсы

Основная литература:

  1. Таненбаум Э., Бос Х. Современные операционные системы. 4-е изд. — Гл. 4
  2. Столлингс В. Операционные системы. 9-е изд. — Гл. 12

Дополнительная литература:

  1. Love R. Linux Kernel Development. 3rd ed.
  2. Стивенс У., Раго С. UNIX. Профессиональное программирование.
Файловые системы

Переходим к плану лекции. Сегодня рассмотрим четыре крупных блока: задачи ОС, организация файловых систем, файловые операции и контроль доступа. Это позволит сформировать целостное представление о работе файловых систем.

Файловая система — один из самых-visible компонентов ОС. Каждый пользователь сталкивается с ней ежедневно. Здесь важно подчеркнуть, что ФС скрывает сложность физического хранения за простым интерфейсом.

Начинаем первый раздел. Обратите внимание: ОС берёт на себя всю работу по управлению файлами — от создания до физического размещения на диске. Без ОС приложению пришлось бы работать с диском напрямую.

Дисковое пространство — конечный ресурс. ОС должна эффективно выделять и освобождать блоки, чтобы избежать фрагментации и обеспечить возможность роста файлов.

Безопасность и целостность — критичные аспекты. Журналирование, о котором мы поговорим позже, позволяет восстановить ФС после внезапного отключения питания без потери данных.

Производительность ФС напрямую влияет на восприятие системы пользователем. Кэширование — один из ключевых механизмов: данные читаются из оперативной памяти, а не с медленного диска.

Современные системы работают с самыми разными носителями: от классических жёстких дисков до SSD и сетевых хранилищ. ОС предоставляет единый интерфейс, абстрагируясь от аппаратных особенностей каждого устройства.

Подсистема ввода-вывода — мост между файловыми операциями и аппаратурой. Буферизация позволяет накапливать данные и выполнять операции более эффективными порциями.

Переходим ко второму разделу. Важно понимать разницу: логическая организация — это то, что видит пользователь, а физическая — как данные реально расположены на диске.

Иерархическая структура — стандарт де-факто. Обратите внимание на разницу между Unix и Windows: Unix использует единое корневое дерево, а Windows — отдельные деревья для каждого диска.

Правила именования различаются между файловыми системами. Например, FAT32 не различает регистр, а ext4 — различает. Расширения файлов — условность, не гарантия типа содержимого.

Атрибуты хранятся в метаданных файла и позволяют ОС и приложениям получать информацию о файле без чтения его содержимого. Тип файла определяет, как ОС с ним работает.

Том — логическая единица, которую можно форматировать в любую ФС. Суперблок содержит критически важную информацию: если он повреждён, вся файловая система становится недоступной.

Переходим к физической организации. Блок — это атомарная единица обмена между диском и ОС. Выбор размера блока — компромисс: большие блоки уменьшают накладные расходы, но увеличивают потери места.

Непрерывное размещение — исторически первый метод. Аналогия: как комнаты в гостинице, идущие подряд. Просто и быстро, но со временем диск фрагментируется и новые файлы некуда разместить.

Связанное размещение решает проблему фрагментации: блоки могут быть где угодно. Но чтобы прочитать конец файла, нужно пройти всю цепочку — это медленно. Аналогия: квест по подсказкам.

Индексированное размещение — компромисс. Индексный блок работает как оглавление: зная номер нужного блока, можно сразу перейти к нему. Это стандарт для современных ФС — ext4, NTFS, APFS.

Сводная таблица наглядно показывает, почему индексированное размещение стало стандартом. Непрерывное почти не используется в чистом виде, а связанное — основа FAT32.

Два основных подхода к учёту свободного места. Битовые карты компактны и позволяют быстро найти连续ные свободные блоки. Связанные списки экономят память, но сложнее в поиске连续ных областей.

Метаданные — «нервный центр» файловой системы. Суперблок читается при монтировании ФС. В Unix для повышения надёжности суперблок копируется в нескольких местах на диске.

FAT32 — классика, всё ещё встречается на флешках и SD-картах благодаря совместимости. Ограничение в 4 ГБ на файл делает её непригодной для современных задач: даже один видеофайл может превышать этот лимит.

NTFS — основная ФС Windows. Журналирование обеспечивает восстановление после сбоев: ОС записывает планируемые операции и может откатить незавершённые. EFS и сжатие — дополнительные преимущества.

ext4 — рабочая лошадка Linux. Отложенное выделение блоков позволяет ОС оптимизировать размещение, накапливая запросы и выделяя непрерывные области. Обратная совместимость с ext2/ext3 облегчает миграцию.

APFS — современная ФС Apple, созданная специально для SSD и флэш-памяти. Copy-on-Write позволяет мгновенно копировать файлы без реального дублирования данных. Snapshots используются в Time Machine.

Сводная таблица для сравнения. Обратите внимание: FAT32 не имеет журналирования — при сбое выше риск потери данных. APFS технически поддерживает самый большой размер файла, хотя практический лимит определяется другими факторами.

Третий раздел — файловые операции. Это системные вызовы, через которые приложения взаимодействуют с файлами. Create, Open, Read — базовые операции, без которых не обходится ни одна программа, работающая с файлами.

Write и Seek дополняют базовые операции. Seek особенно важен: он позволяет перемещаться внутри файла, не закрывая и не открывая его заново. Это основа произвольного доступа к данным.

Close — не менее важен, чем Open. Несзакрытый файл удерживает дескриптор и может блокировать удаление. Delete не всегда немедленно удаляет данные — пока файл открыт, блоки на диске сохраняются.

Атрибуты хранятся отдельно от содержимого файла — в inode или MFT-записи. Получить атрибуты можно без чтения самого файла, что значительно быстрее, особенно для больших файлов.

Жизненный цикл файла — от создания до удаления. Важный момент: дескриптор файла — ограниченный ресурс. Если забывать закрывать файлы, можно исчерпать лимит дескрипторов на процесс.

Дескриптор — целое число, но за ним стоит вся мощь ОС. В Linux лимит по умолчанию — 1024 дескриптора на процесс. Для серверов этот лимит обычно увеличивают, так как каждый сетевой соединение тоже consumes дескриптор.

Четвёртый раздел — контроль доступа. Без механизмов разграничения прав любой пользователь мог бы прочитать или удалить чужие файлы. Это основа многопользовательской безопасности.

ACL — наиболее гибкая модель. Можно дать конкретному пользователю или группе определённые права, не меняя базовую категорию «остальные». Это необходимо в корпоративных средах с тонкой настройкой доступа.

Классическая модель Unix — три категории и три типа прав. Восьмеричная запись компактна: 7 = rwx, 6 = rw-, 5 = r-x и так далее. Это основа, которую нужно знать наизусть.

Конкретный пример: rwxr-xr-- = 754. Владелец может всё, группа может читать и выполнять, остальные — только читать. Покажите, как каждая тройка символов переводится в восьмеричную цифру.

RBAC удобен в корпоративных системах: вместо назначения прав каждому пользователю определяются роли. Пользователь получает права через назначение роли, что упрощает администрирование при большом количестве сотрудников.

Практические инструменты управления правами. chmod — основной инструмент в Unix. Можно использовать как восьмеричную запись (755), так и символьную (u+x). setfacl — для управления ACL-записями.

Специальные биты — мощный механизм с потенциалом для уязвимостей. SUID позволяет выполнить программу с правами владельца: именно так работает sudo. Sticky bit на /tmp предотвращает удаление чужих файлов в общем каталоге.

umask — фильтр, который определяет, какие права убираются при создании файла. Значение 022 означает: для владельца — все права, для группы и остальных — убирается запись. Это защищает от случайного создания файлов, доступных для записи всем.

Подводим итоги. Файловые системы — это сложный баланс между производительностью, надёжностью и безопасностью. Не существует идеальной ФС — каждая оптимизирована под свои задачи.

Ключевые тезисы лекции на двух колонках. Обратите особое внимание на индексированное размещение и модели контроля доступа — это темы, которые часто встречаются в экзаменационных вопросах.

Вопросы для самопроверки. Рекомендую разобрать каждый вопрос самостоятельно — это отличный способ закрепить материал. Особое внимание уделите вопросам 3, 7 и 10, они требуют синтеза информации из нескольких слайдов.

Рекомендуемая литература для углублённого изучения. Таненбаум — классика, глава 4 подробно разбирает файловые системы. Столлингс даёт альтернативный взгляд. Для практики с Unix-системами крайне рекомендуется Стивенс.